|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) ОТДЕЛ Упорядочивание+; (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) (* НАЗНАЧЕНИЕ: проверка упорядочивания рядов *) (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) ИСПОЛЬЗУЕТ Вставкой, Вставкой2, Выбором, Обменом, ОбменомБ, Матем ИЗ "...\Отделы\Числа\", ОС ИЗ "...\Отделы\Обмен\", Вывод ИЗ "...\Отделы\Обмен\"; ПОСТ (* алгоритмы упорядочивания *) упВставкой = 0; упВставкой2= 1; упВыбором = 2; упОбменом = 3; упОбменомБ = 4; (* число повторов упорядочивания короткого ряда *) Повторов = 10000; ПЕР короткийРяд:РЯД 30 ИЗ ЦЕЛ; длинныйРяд :РЯД 30000 ИЗ ЦЕЛ; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Вывести(ряд+:РЯД ИЗ ЦЕЛ); (* вывод на экран всех слагаемых ряда *) ПЕР поз:ЦЕЛ; УКАЗ ОТ поз:=0 ДО РАЗМЕР(ряд)-1 ВЫП Вывод.ЧЦел("%d ",ряд[поз],0,0,0) КОН; Вывод.Цепь("^") КОН Вывести; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Заполнить(ряд+:РЯД ИЗ ЦЕЛ); (* заполнение ряда случайными числами *) ПЕР поз:ЦЕЛ; УКАЗ ОТ поз:=0 ДО РАЗМЕР(ряд)-1 ВЫП ряд[поз]:=УЗК(ВШИРЦЕЛ(Матем.случ()*РАЗМЕР(ряд))) КОН КОН Заполнить; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Испытание(Алгоритм:ЗАДАЧА(ряд+:РЯД ИЗ ЦЕЛ)); (* испытание заданного алгоритма упорядочивания *) ПЕР повтор:ЦЕЛ; начВремя,время:ЦЕЛ; УКАЗ (* одинаковая последовательность случайных чисел *) Матем.случ0(0); (* повторяем упорядочивание малого ряда *) время:=0; ОТ повтор:=1 ДО Повторов ВЫП Заполнить(короткийРяд); начВремя:=ОС.Время(); Алгоритм(короткийРяд); УВЕЛИЧИТЬ(время,ОС.Время()-начВремя) КОН; Вывод.ЧЦел("%d рядов из %d целых чисел за %dмс^",Повторов,РАЗМЕР(короткийРяд),время,0); Вывести(короткийРяд); (* упорядочиваем большой ряд *) Заполнить(длинныйРяд); начВремя:=ОС.Время(); Алгоритм(длинныйРяд); время:=ОС.Время() - начВремя; Вывод.ЧЦел("ряд из %d целых чисел за %dмс^",РАЗМЕР(длинныйРяд),время,0,0) КОН Испытание; (*────────────────────────────────────────────────────────────────────────────*) ЗАДАЧА Испытания; (* испытание всех алгоритмов упорядочивания *) ПЕР алгоритм:ЦЕЛ; УКАЗ ОТ алгоритм:=упВставкой ДО упОбменомБ ВЫП ВЫБРАТЬ алгоритм ИЗ | упВставкой: Вывод.Цепь("^Упорядочивание простой вставкой^"); Испытание(Вставкой.Упорядочить) | упВставкой2: Вывод.Цепь("^Упорядочивание двоичной вставкой^"); Испытание(Вставкой2.Упорядочить) | упВыбором: Вывод.Цепь("^Упорядочивание простым выбором^"); Испытание(Выбором.Упорядочить) | упОбменом: Вывод.Цепь("^Упорядочивание простым обменом^"); Испытание(Обменом.Упорядочить) | упОбменомБ: Вывод.Цепь("^Упорядочивание быстрым обменом^"); Испытание(ОбменомБ.Упорядочить) ИНАЧЕ КОН КОН КОН Испытания; (*────────────────────────────────────────────────────────────────────────────*) УКАЗ Испытания КОН Упорядочивание. |
|